#pragma once

typedef enum DivisionKeycode
{
    // LATIN CHARACTERS
    DIVISION_KEYCODE_Q = 1,
    DIVISION_KEYCODE_W = 2,
    DIVISION_KEYCODE_E = 3,
    DIVISION_KEYCODE_R = 4,
    DIVISION_KEYCODE_T = 5,
    DIVISION_KEYCODE_Y = 6,
    DIVISION_KEYCODE_U = 7,
    DIVISION_KEYCODE_I = 8,
    DIVISION_KEYCODE_O = 9,
    DIVISION_KEYCODE_P = 10,
    DIVISION_KEYCODE_A = 11,
    DIVISION_KEYCODE_S = 12,
    DIVISION_KEYCODE_D = 13,
    DIVISION_KEYCODE_F = 14,
    DIVISION_KEYCODE_G = 15,
    DIVISION_KEYCODE_H = 16,
    DIVISION_KEYCODE_J = 17,
    DIVISION_KEYCODE_K = 18,
    DIVISION_KEYCODE_L = 19,
    DIVISION_KEYCODE_Z = 20,
    DIVISION_KEYCODE_X = 21,
    DIVISION_KEYCODE_C = 22,
    DIVISION_KEYCODE_V = 23,
    DIVISION_KEYCODE_B = 24,
    DIVISION_KEYCODE_N = 25,
    DIVISION_KEYCODE_M = 26,

    // NUMBERS
    DIVISION_KEYCODE_0 = 27,
    DIVISION_KEYCODE_1 = 28,
    DIVISION_KEYCODE_2 = 29,
    DIVISION_KEYCODE_3 = 30,
    DIVISION_KEYCODE_4 = 31,
    DIVISION_KEYCODE_5 = 32,
    DIVISION_KEYCODE_6 = 33,
    DIVISION_KEYCODE_7 = 34,
    DIVISION_KEYCODE_8 = 35,
    DIVISION_KEYCODE_9 = 36,

    // PUNCTUNATION, ARTITHMETIC OPERATORS
    DIVISION_KEYCODE_MINUS = 37,
    DIVISION_KEYCODE_EQUAL = 38,

    DIVISION_KEYCODE_LSQUARE_BRACKET = 39,
    DIVISION_KEYCODE_RSQUARE_BRACKET = 40,
    DIVISION_KEYCODE_SEMICOLON = 41,
    DIVISION_KEYCODE_QUOTE = 42,
    DIVISION_KEYCODE_BACKSLASH = 43,
    DIVISION_KEYCODE_COMMA = 44,
    DIVISION_KEYCODE_DOT = 45,
    DIVISION_KEYCODE_SLASH = 46,
    DIVISION_KEYCODE_TILDE = 47,
    DIVISION_KEYCODE_PARAGRAPH = 48,

    // NUMPAD
    DIVISION_KEYCODE_NUMPAD_0 = 49,
    DIVISION_KEYCODE_NUMPAD_1 = 50,
    DIVISION_KEYCODE_NUMPAD_2 = 51,
    DIVISION_KEYCODE_NUMPAD_3 = 52,
    DIVISION_KEYCODE_NUMPAD_4 = 53,
    DIVISION_KEYCODE_NUMPAD_5 = 54,
    DIVISION_KEYCODE_NUMPAD_6 = 55,
    DIVISION_KEYCODE_NUMPAD_7 = 56,
    DIVISION_KEYCODE_NUMPAD_8 = 57,
    DIVISION_KEYCODE_NUMPAD_9 = 58,
    DIVISION_KEYCODE_NUMPAD_NUM_LOCK = 59,
    DIVISION_KEYCODE_NUMPAD_CLEAR = DIVISION_KEYCODE_NUMPAD_NUM_LOCK,
    DIVISION_KEYCODE_NUMPAD_DIV = 60,
    DIVISION_KEYCODE_NUMPAD_MUL = 61,
    DIVISION_KEYCODE_NUMPAD_SUB = 62,
    DIVISION_KEYCODE_NUMPAD_ADD = 63,
    DIVISION_KEYCODE_NUMPAD_ENTER = 64,
    DIVISION_KEYCODE_NUMPAD_DOT = 65,
    DIVISION_KEYCODE_NUMPAD_EQUAL = 66,

    // FUNCTIONAL
    DIVISION_KEYCODE_F1 = 67,
    DIVISION_KEYCODE_F2 = 68,
    DIVISION_KEYCODE_F3 = 69,
    DIVISION_KEYCODE_F4 = 70,
    DIVISION_KEYCODE_F5 = 71,
    DIVISION_KEYCODE_F6 = 72,
    DIVISION_KEYCODE_F7 = 73,
    DIVISION_KEYCODE_F8 = 74,
    DIVISION_KEYCODE_F9 = 75,
    DIVISION_KEYCODE_F10 = 76,
    DIVISION_KEYCODE_F11 = 77,
    DIVISION_KEYCODE_F12 = 78,
    DIVISION_KEYCODE_F13 = 79,
    DIVISION_KEYCODE_F14 = 80,
    DIVISION_KEYCODE_F15 = 81,
    DIVISION_KEYCODE_F16 = 82,
    DIVISION_KEYCODE_F17 = 83,
    DIVISION_KEYCODE_F18 = 84,
    DIVISION_KEYCODE_F19 = 85,

    // Control buttons
    DIVISION_KEYCODE_ESC = 86,
    DIVISION_KEYCODE_ENTER = 87,
    DIVISION_KEYCODE_SPACE = 88,
    DIVISION_KEYCODE_LSHIFT = 89,
    DIVISION_KEYCODE_RSHIFT = 90,
    DIVISION_KEYCODE_LALT = 91,
    DIVISION_KEYCODE_RALT = 92,
    DIVISION_KEYCODE_LCTRL = 93,
    DIVISION_KEYCODE_RCTRL = 94,
    DIVISION_KEYCODE_LCONTROL = 95,
    DIVISION_KEYCODE_RCONTROL = 96,

    DIVISION_KEYCODE_LOPTION = DIVISION_KEYCODE_LALT,
    DIVISION_KEYCODE_ROPTION = DIVISION_KEYCODE_RALT,
    DIVISION_KEYCODE_LCMD = DIVISION_KEYCODE_LCTRL,
    DIVISION_KEYCODE_RCMD = DIVISION_KEYCODE_RCTRL,
    DIVISION_KEYCODE_LWIN = DIVISION_KEYCODE_LCONTROL,
    DIVISION_KEYCODE_RWIN = DIVISION_KEYCODE_RCONTROL,

    DIVISION_KEYCODE_CAPS_LOCK = 97,
    DIVISION_KEYCODE_TAB = 98,
    DIVISION_KEYCODE_LEFT_ARROW = 99,
    DIVISION_KEYCODE_RIGHT_ARROW = 100,
    DIVISION_KEYCODE_UP_ARROW = 101,
    DIVISION_KEYCODE_DOWN_ARROW = 102,
    DIVISION_KEYCODE_BACKSPACE = 103,
    DIVISION_KEYCODE_DELETE = 104,
    DIVISION_KEYCODE_INSERT = 105,
    DIVISION_KEYCODE_HOME = 106,
    DIVISION_KEYCODE_END = 107,
    DIVISION_KEYCODE_PAGE_UP = 108,
    DIVISION_KEYCODE_PAGE_DOWN = 109,

    DIVISION_KEYCODE_PRINT = 110,
    DIVISION_KEYCODE_SCROLL = 111,
    DIVISION_KEYCODE_PAUSE = 112,

    DIVISION_KEYCODE_EJECT = 113
} DivisionKeycode;

#define DIVISION_KEYCODE_COUNT DIVISION_KEYCODE_EJECT + 1